package com.atguigu.java1;

import org.junit.Test;

import java.util.Date;
import java.util.Scanner;

/**
 *      一、异常的体系结构：
 *              java.lang.Throwable
 *                  |------java.lang.Error:一般不编写针对性的代码进行处理
 *                  |------java.lang.Exception:可以进行异常的处理
 *                      |-------编译时异常(checked)
 *                              |------IOException
 *                                  |------FileNotFoundException
 *                              |------ClassNotFoundException
 *                      |-------运行时异常(unchecked)
 *                              |------NullPointerException
 *                              |------ArrayIndexOutOfBoundsException
 *                              |------ClassCastException
 *                              |------NumberFormatException
 *                              |------InputMismatchException
 *                              |------ArithmeticException
 *
 *
 *  面试题：常见异常有哪些？举例说明
 *
 *
 *
 * @author : leimingchao
 * @date Date : 2021年08月21日 20:39
 */
public class ExceptionTest {

    //****************************以下是编译时异常******************************
    @Test
    public void test7() {
        // File file = new File("hello.txt");
        // FileInputStream fileInputStream = new FileInputStream(file);
        // int data = fileInputStream.read();
        // while (data != -1) {
        //     System.out.println((char) data);
        //     data = fileInputStream.read();
        // }
        //
        // fileInputStream.close();
    }

    //***************************以下是运行时异常*******************************
    @Test
    public void test6() {
        int a = 10;
        int b = 0;
        System.out.println(a / b);
    }

    @Test
    public void test5() {
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();
        System.out.println(score);
        scanner.close();
    }

    @Test
    public void test4() {
        String str = "123d";
        int num = Integer.parseInt(str);
    }

    @Test
    public void test3() {
        Object obj = new Date();
        String str = (String) obj;
    }

    @Test
    public void test2() {
        // int[] arr = new int[10];
        // System.out.println(arr[10]);
        String str = "abc";
        System.out.println(str.charAt(3));

    }

    @Test
    public void test() {
        // int[] arr = null;
        // System.out.println(arr[3]);

        String str = "abc";
        str = null;
        System.out.println(str.charAt(0));
    }
}
